﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entidades;
using System.Data.SqlClient;

namespace AccesoBD
{
    public class Historiales_Clinicos
    {
        //ACTUALIZAR HC Y REGISTRAR NUEVO DETALLE HC
        public static bool actualizarHc(HistoriaClinica oHC)
        {
            SqlConnection con = null;
            con = DB.Conectar();
            SqlTransaction tran = null;
            tran = con.BeginTransaction();
            bool resultado = false;
            try
            {
                string comando = "UPDATE Historia_Clinica SET idGrupoSang =@idGrupoSang, idFactorRH =@idFactorRH, antecedentesFamiliares =@antFam, observaciones =@observ "
                                    + "WHERE (nroHC = @nroHc)";
                List<SqlParameter> listp = new List<SqlParameter>();
                listp.Add(new SqlParameter("@nroHc", oHC.nrohC));
                if (oHC.grupoSanguineo != null)
                {
                    listp.Add(new SqlParameter("@idGrupoSang", oHC.grupoSanguineo));

                }
                else
                {
                    listp.Add(new SqlParameter("@idGrupoSang", DBNull.Value));
                }
                if (oHC.factorRH != null)
                {
                    listp.Add(new SqlParameter("@idFactorRH", oHC.factorRH));
                }
                else
                {
                    listp.Add(new SqlParameter("@idFactorRH", DBNull.Value));
                }
                if (oHC.antecedentesFamiliares != "")
                {
                    listp.Add(new SqlParameter("@antFam", oHC.antecedentesFamiliares));
                }
                else
                {
                    listp.Add(new SqlParameter("@antFam", DBNull.Value));
                }
                if (oHC.Observaciones != "")
                {
                    listp.Add(new SqlParameter("@observ", oHC.Observaciones));
                }
                else
                {
                    listp.Add(new SqlParameter("@observ", DBNull.Value));

                }

                int res = DB.EjecutarCommand(comando, listp, con, tran);

                //VERIFICAMOS SI POSEE ANTECEDENTES LA HC
                #region ANTECEDENTESXPACIENTE
                if (res > 0)
                {
                    if (oHC.antecedentesXPaciente != null)
                    {
                        int? idAnt = null;
                        comando = "INSERT INTO AntecedentesXPaciente (idAntecedente, nroHC) VALUES (@idAnte,@nroHc)";
                        listp = new List<SqlParameter>();

                        foreach (Antecedentes oA in oHC.antecedentesXPaciente)
                        {
                            idAnt = oA.id;
                            listp = new List<SqlParameter>();
                            listp.Add(new SqlParameter("@idAnte", idAnt));
                            listp.Add(new SqlParameter("@nroHc", oHC.nrohC));


                            res = DB.EjecutarCommand(comando, listp, con, tran);
                        }

                    }//--

                }//-FIN IF 
                #endregion
                if (res > 0)
                {
                    //VERIFICAMOS SI POSEE DETALLE_HC 
                    #region LISTA DETALLE HC
                    if (oHC.detalleHC.Count > 0)
                    {
                        comando = "INSERT INTO Detalle_HC (idHC, fechaAtencion, descripcionAtencion, idEspecialidad, legajoMedico, altura, peso, idDiagnostico, horaInicio, horaFin, indicaciones) "
                                 + "VALUES (@idHC, @fechaAtencion, @descripcionAtencion, @idEspecialidad, @legajoMedico, @altura, @peso, @idDiagnostico, @horaInicio, @horaFin, @indicaciones)";
                        listp = new List<SqlParameter>();
                        listp.Add(new SqlParameter("@idHC", oHC.detalleHC.ElementAt(0).nroHc));
                        listp.Add(new SqlParameter("@fechaAtencion", oHC.detalleHC.ElementAt(0).fechaAtencion));
                        listp.Add(new SqlParameter("@descripcionAtencion", oHC.detalleHC.ElementAt(0).descripcionAtencion));
                        listp.Add(new SqlParameter("@idEspecialidad", oHC.detalleHC.ElementAt(0).especialidad.CodEspecialidad));
                        listp.Add(new SqlParameter("@legajoMedico", oHC.detalleHC.ElementAt(0).medico.Legajo));
                        listp.Add(new SqlParameter("@horaInicio", oHC.detalleHC.ElementAt(0).horaInicio));
                        listp.Add(new SqlParameter("@horaFin", oHC.detalleHC.ElementAt(0).horaFina));

                        if (oHC.detalleHC.ElementAt(0).diagnostico.id != null)
                        {
                            listp.Add(new SqlParameter("@idDiagnostico", oHC.detalleHC.ElementAt(0).diagnostico.id));
                        }
                        else
                        {
                            listp.Add(new SqlParameter("@idDiagnostico", DBNull.Value));
                        }
                        if (oHC.detalleHC.ElementAt(0).indicaciones != "")
                        {
                            listp.Add(new SqlParameter("@indicaciones", oHC.detalleHC.ElementAt(0).indicaciones));
                        }
                        else
                        {
                            listp.Add(new SqlParameter("@indicaciones", DBNull.Value));
                        }
                        if (oHC.detalleHC.ElementAt(0).peso != null)
                        {
                            listp.Add(new SqlParameter("@peso", oHC.detalleHC.ElementAt(0).peso));
                        }
                        else
                        {
                            listp.Add(new SqlParameter("@peso", DBNull.Value));
                        }
                        if (oHC.detalleHC.ElementAt(0).altura != null)
                        {
                            listp.Add(new SqlParameter("@altura", oHC.detalleHC.ElementAt(0).altura));
                        }
                        else
                        {
                            listp.Add(new SqlParameter("@altura", DBNull.Value));
                        }
                        res = DB.EjecutarCommand(comando, listp, con, tran);

                        //VERIFICAMOS SI POSEE PRACTICAS A REALIZAR
                        if (res > 0)
                        {
                            #region DETALLE PRACTICAS
                            if (oHC.detalleHC.ElementAt(0).lstPractica != null)
                            {
                                Practica oP = null;
                                long ultimoNumDetalleHC = ObtenerUltimaDetalleHistoriaClinica(con, tran);
                                comando = "INSERT INTO PracticasXDetalleHC (idDetalleHC, idPractica) VALUES (@idDetalle,@idPractica)";



                                foreach (Practica pract in oHC.detalleHC.ElementAt(0).lstPractica)
                                {
                                    oP = new Practica();
                                    oP.codigo = pract.codigo;
                                    listp = new List<SqlParameter>();
                                    listp.Add(new SqlParameter("@idDetalle", ultimoNumDetalleHC));
                                    listp.Add(new SqlParameter("@idPractica", oP.codigo));
                                    oP = null;
                                    res = DB.EjecutarCommand(comando, listp, con, tran);

                                }
                            }
                            if (res > 0)
                            {

                                resultado = true;
                                tran.Commit();
                            }//--FIN IF
                            #endregion
                        }//--FIN IF




                    }//--FIN IF 
                    #endregion


                }//--FIN IF


            }
            catch (Exception)
            {
                if (tran != null)
                {
                    tran.Rollback();
                    resultado = false;
                }
                throw;
            }
            finally
            {
                con.Close();
            }
            return resultado;
        }
        public static bool actualizarHCxFRH(long hc, int frh)
        {
            SqlConnection con = null;
            con = DB.Conectar();
            SqlTransaction tran = null;
            tran = con.BeginTransaction();
            bool resultado = false;
            try
            {
                string comando = "UPDATE Historia_Clinica SET idFactorRH = @Factor WHERE (nroHC = @nrhHC)";
                List<SqlParameter> listp = new List<SqlParameter>();
                listp.Add(new SqlParameter("@Factor", frh));
                listp.Add(new SqlParameter("@nrhHC", hc));
                int r = DB.EjecutarCommand(comando, listp, con, tran);
                if (r > 0)
                {
                    tran.Commit();
                    resultado = true;
                    
                }

            }
            catch (Exception)
            {
                if (tran != null)
                {
                    tran.Rollback();
                    resultado = false;
                }
                throw;
            }
            finally
            {

                con.Close();
            }


            return resultado;

        }
        public static bool actualizarHCxGRPS(long hc, int grPS)
        {
            SqlConnection con = null;
            con = DB.Conectar();
            SqlTransaction tran = null;
            tran = con.BeginTransaction();
            bool resultado = false;
            try
            {
                string comando = "UPDATE Historia_Clinica SET idGrupoSang = @idGrupoSang WHERE (nroHC = @nrhHC)";
                List<SqlParameter> listp = new List<SqlParameter>();
                listp.Add(new SqlParameter("@idGrupoSang", grPS));
                listp.Add(new SqlParameter("@nrhHC", hc));
                int r = DB.EjecutarCommand(comando, listp, con, tran);
                if (r > 0)
                {
                    resultado = true;
                    tran.Commit();
                }

            }
            catch (Exception)
            {
                if (tran != null)
                {
                    tran.Rollback();
                    resultado = false;
                }
                throw;
            }
            finally
            {

                con.Close();
            }


            return resultado;


        }
        //ACTUALIZAR HC Y ACTUALIZAR DETALLE HC
        //public static bool actualizarDetalleYhC(HistoriaClinica oHC)
        //{
        //    SqlConnection con = null;
        //    con = DB.Conectar();
        //    SqlTransaction tran = null;
        //    tran = con.BeginTransaction();
        //    bool resultado = false;
        //    try
        //    {
        //        string comando = "UPDATE Historia_Clinica SET grupoSanguineo =@grpSanguineo, factorRH =@factorRh, antecedentesFamiliares =@antFam, observaciones =@observ "
        //                            + "WHERE (nroHC = @nroHc)";
        //        List<SqlParameter> listp = new List<SqlParameter>();
        //        listp.Add(new SqlParameter("@nroHc", oHC.nrohC));
        //        if (oHC.grupoSanguineo != "")
        //        {
        //            listp.Add(new SqlParameter("@grpSanguineo", oHC.grupoSanguineo));

        //        }
        //        else
        //        {
        //            listp.Add(new SqlParameter("@grpSanguineo", DBNull.Value));
        //        }
        //        if (oHC.factorRH != "")
        //        {
        //            listp.Add(new SqlParameter("@factorRh", char.Parse(oHC.factorRH)));
        //        }
        //        else
        //        {
        //            listp.Add(new SqlParameter("@factorRh", DBNull.Value));
        //        }
        //        if (oHC.antecedentesFamiliares != "")
        //        {
        //            listp.Add(new SqlParameter("@antFam", oHC.antecedentesFamiliares));
        //        }
        //        else
        //        {
        //            listp.Add(new SqlParameter("@antFam", DBNull.Value));
        //        }
        //        if (oHC.Observaciones != "")
        //        {
        //            listp.Add(new SqlParameter("@observ", oHC.Observaciones));
        //        }
        //        else
        //        {
        //            listp.Add(new SqlParameter("@observ", DBNull.Value));

        //        }

        //        int res = DB.EjecutarCommand(comando, listp, con, tran);

        //        //VERIFICAMOS SI POSEE ANTECEDENTES LA HC
        //        #region ANTECEDENTESXPACIENTE
        //        if (res > 0)
        //        {
        //            if (oHC.antecedentesXPaciente != null)
        //            {
        //                int? idAnt = null;
        //                comando = "INSERT INTO AntecedentesXPaciente (idAntecedente, nroHC) VALUES (@idAnte,@nroHc)";
        //                listp = new List<SqlParameter>();

        //                foreach (Antecedentes oA in oHC.antecedentesXPaciente)
        //                {
        //                    idAnt = oA.id;
        //                    listp = new List<SqlParameter>();
        //                    listp.Add(new SqlParameter("@idAnte", idAnt));
        //                    listp.Add(new SqlParameter("@nroHc", oHC.nrohC));


        //                    res = DB.EjecutarCommand(comando, listp, con, tran);
        //                }

        //            }//--

        //        }//-FIN IF 
        //        #endregion
        //        if (res > 0)
        //        {
        //            //VERIFICAMOS SI POSEE DETALLE_HC 
        //            #region LISTA DETALLE HC
        //            if (oHC.detalleHC.Count > 0)
        //            {
        //                comando = "INSERT INTO Detalle_HC (idHC, fechaAtencion, descripcionAtencion, idEspecialidad, legajoMedico, altura, peso, idDiagnostico, horaInicio, horaFin, indicaciones) "
        //                         + "VALUES (@idHC, @fechaAtencion, @descripcionAtencion, @idEspecialidad, @legajoMedico, @altura, @peso, @idDiagnostico, @horaInicio, @horaFin, @indicaciones)";
        //                listp = new List<SqlParameter>();
        //                listp.Add(new SqlParameter("@idHC", oHC.detalleHC.ElementAt(0).nroHc));
        //                listp.Add(new SqlParameter("@fechaAtencion", oHC.detalleHC.ElementAt(0).fechaAtencion));
        //                listp.Add(new SqlParameter("@descripcionAtencion", oHC.detalleHC.ElementAt(0).descripcionAtencion));
        //                listp.Add(new SqlParameter("@idEspecialidad", oHC.detalleHC.ElementAt(0).especialidad.CodEspecialidad));
        //                listp.Add(new SqlParameter("@legajoMedico", oHC.detalleHC.ElementAt(0).medico.Legajo));
        //                listp.Add(new SqlParameter("@horaInicio", oHC.detalleHC.ElementAt(0).horaInicio));
        //                listp.Add(new SqlParameter("@horaFin", oHC.detalleHC.ElementAt(0).horaFina));

        //                if (oHC.detalleHC.ElementAt(0).diagnostico.id != null)
        //                {
        //                    listp.Add(new SqlParameter("@idDiagnostico", oHC.detalleHC.ElementAt(0).diagnostico.id));
        //                }
        //                else
        //                {
        //                    listp.Add(new SqlParameter("@idDiagnostico", DBNull.Value));
        //                }
        //                if (oHC.detalleHC.ElementAt(0).indicaciones != "")
        //                {
        //                    listp.Add(new SqlParameter("@indicaciones", oHC.detalleHC.ElementAt(0).indicaciones));
        //                }
        //                else
        //                {
        //                    listp.Add(new SqlParameter("@indicaciones", DBNull.Value));
        //                }
        //                if (oHC.detalleHC.ElementAt(0).peso != null)
        //                {
        //                    listp.Add(new SqlParameter("@peso", oHC.detalleHC.ElementAt(0).peso));
        //                }
        //                else
        //                {
        //                    listp.Add(new SqlParameter("@peso", DBNull.Value));
        //                }
        //                if (oHC.detalleHC.ElementAt(0).altura != null)
        //                {
        //                    listp.Add(new SqlParameter("@altura", oHC.detalleHC.ElementAt(0).altura));
        //                }
        //                else
        //                {
        //                    listp.Add(new SqlParameter("@altura", DBNull.Value));
        //                }
        //                res = DB.EjecutarCommand(comando, listp, con, tran);
        //                //VERIFICAMOS SI POSEE PRACTICAS A REALIZAR
        //                if (res > 0)
        //                {
        //                    #region DETALLE PRACTICAS
        //                    if (oHC.detalleHC.ElementAt(0).lstPractica != null)
        //                    {
        //                        Practica oP = null;
        //                        long ultimoNumDetalleHC = ObtenerUltimaDetalleHistoriaClinica(con, tran);
        //                        comando = "INSERT INTO PracticasXDetalleHC (idDetalleHC, idPractica) VALUES (@idDetalle,@idPractica)";



        //                        foreach (Practica pract in oHC.detalleHC.ElementAt(0).lstPractica)
        //                        {
        //                            oP = new Practica();
        //                            oP.codigo = pract.codigo;
        //                            listp = new List<SqlParameter>();
        //                            listp.Add(new SqlParameter("@idDetalle", ultimoNumDetalleHC));
        //                            listp.Add(new SqlParameter("@idPractica", oP.codigo));
        //                            oP = null;
        //                            res = DB.EjecutarCommand(comando, listp, con, tran);

        //                        }
        //                    }
        //                    if (res > 0)
        //                    {
        //                        resultado = true;
        //                        tran.Commit();
        //                    }//--FIN IF
        //                    #endregion
        //                }//--FIN IF


        //            }//--FIN IF 
        //            #endregion


        //        }//--FIN IF


        //    }
        //    catch (Exception)
        //    {
        //        if (tran != null)
        //        {
        //            tran.Rollback();
        //            resultado = false;
        //        }
        //        throw;
        //    }
        //    finally
        //    {
        //        con.Close();
        //    }
        //    return resultado;
        //}
        public static long ObtenerUltimaHistoriaClinica(SqlConnection con, SqlTransaction tran)
        {
            long numero = 0;
            try
            {
                string comando = "select MAX(nroHC) from Historia_Clinica";
                List<SqlParameter> listp = new List<SqlParameter>();
                string nroHC = DB.EjecutarScalar(comando, listp, con, tran);
                if (!nroHC.Equals(""))
                {
                    numero = long.Parse(nroHC.ToString());
                }
            }
            catch (Exception)
            {

                throw new Exception("Error al Obtener la historia clinica");
            }
            return numero;
        }
        public static long ObtenerUltimaIDDetalleHistoriaClinica()
        {
            SqlConnection con = DB.Conectar();
            SqlTransaction tran = con.BeginTransaction();
            long numero = 0;
            try
            {
                string comando = "select MAX(idDetalleHC) from Detalle_HC";
                List<SqlParameter> listp = new List<SqlParameter>();
                string nroHC = DB.EjecutarScalar(comando, listp, con, tran);
                if (!nroHC.Equals(""))
                {
                    numero = long.Parse(nroHC.ToString());
                }
            }
            catch (Exception)
            {

                throw new Exception("Error al Obtener la historia clinica");
            }
            finally
            {
                con.Close();
            }
            return numero;
        }
        public static long ObtenerUltimaDetalleHistoriaClinica(SqlConnection con, SqlTransaction tran)
        {
            long numero = 0;
            try
            {
                string comando = "select MAX(idDetalleHC) from Detalle_HC";
                List<SqlParameter> listp = new List<SqlParameter>();
                string nroHC = DB.EjecutarScalar(comando, listp, con, tran);
                if (!nroHC.Equals(""))
                {
                    numero = long.Parse(nroHC.ToString());
                }
            }
            catch (Exception)
            {

                throw new Exception("Error al Obtener la historia clinica");
            }
            return numero;
        }
        public static List<Diagnostico> obtenerDiagnosticos()
        {
            SqlConnection con = DB.Conectar();
            List<Diagnostico> ld = null;
            Diagnostico d = null;

            try
            {
                string comando = "select * from Diagnostico";
                List<SqlParameter> listp = new List<SqlParameter>();

                SqlDataReader dr = DB.GenerarReader(comando, listp, con);
                ld = new List<Diagnostico>();
                while (dr.Read())
                {
                    d = new Diagnostico();
                    d.nombre = dr["nombre"].ToString();
                    d.id = int.Parse(dr["idDiagnostico"].ToString());
                    ld.Add(d);
                    d = null;

                }

            }
            catch (Exception)
            {

                throw;
            }
            finally
            {
                con.Close();
            }
            return ld;
        }//Fin Metodo
        //OBTENMOS LA HISTORIA CLINICA DEL PACIENTE POR NUMERO DE HC
        public static HistoriaClinica obtenerHistoriaClinica(long nrohc)
        {
            HistoriaClinica hc = null;
            Antecedentes oA = null;
            SqlConnection con = DB.Conectar();
            DetalleHC oD = null;
            Practica oP = null;

            try
            {
                string comando = "select * from Historia_Clinica where @nroHc=nroHc";
                List<SqlParameter> lstp = new List<SqlParameter>();
                lstp.Add(new SqlParameter("@nroHc", nrohc));
                SqlDataReader dr = DB.GenerarReader(comando, lstp, con);

                if (dr.Read())
                {
                    hc = new HistoriaClinica();
                    hc.fechaCreacion = DateTime.Parse(dr["fechaCreacion"].ToString());

                    if (dr["idGrupoSang"] != DBNull.Value)
                    {
                        hc.grupoSanguineo = (int)dr["idGrupoSang"];
                    }

                    if (dr["idFactorRH"] != DBNull.Value)
                    {
                        hc.factorRH = (int)dr["idFactorRH"];
                    }
                    if (dr["antecedentesFamiliares"] != DBNull.Value)
                    {
                        hc.antecedentesFamiliares = dr["antecedentesFamiliares"].ToString();
                    }
                    if (dr["observaciones"] != DBNull.Value)
                    {

                        hc.Observaciones = dr["observaciones"].ToString();
                    }

                    //Traemos los antecedentes por Pacientes
                    hc.antecedentesXPaciente = new List<Antecedentes>();

                    comando = "select * from AntecedentesXPaciente where @nroHc=nroHc";
                    dr.Close();
                    lstp = new List<SqlParameter>();
                    lstp.Add(new SqlParameter("@nroHc", nrohc));
                    dr = DB.GenerarReader(comando, lstp, con);

                    while (dr.Read())
                    {
                        oA = new Antecedentes();

                        oA.id = (int)dr["idAntecedente"];
                        hc.antecedentesXPaciente.Add(oA);
                        oA = null;
                    }
                    //Traemos los detalles de HC.
                    hc.detalleHC = new List<DetalleHC>();
                    comando = "select dHC.*,P.nombre as NombreP, P.apellido as apellido,E.nombre as NombreEs, D.idDiagnostico as idDiag, D.nombre as nombreDiag from Detalle_HC dHC, Medico M, Persona P,Especialidad E,Diagnostico D where @nroHc=dHC.idHC and M.Legajo=dHC.legajoMedico and P.codPersona=M.codPersona and dHC.idEspecialidad=E.codEspecialidad and D.idDiagnostico=dHC.idDiagnostico";
                    dr.Close();
                    lstp = new List<SqlParameter>();
                    lstp.Add(new SqlParameter("@nroHc", nrohc));
                    dr = DB.GenerarReader(comando, lstp, con);
                    while (dr.Read())
                    {
                        oD = new DetalleHC();
                        oD.codDetalle = (long)dr["idDetalleHC"];
                        oD.fechaAtencion = (DateTime)dr["fechaAtencion"];
                        oD.descripcionAtencion = dr["descripcionAtencion"].ToString();
                        oD.especialidad = new Especialidad();
                        oD.especialidad.CodEspecialidad = (int)dr["idEspecialidad"];
                        oD.especialidad.Nombre = dr["NombreEs"].ToString();
                        oD.medico = new Medico();
                        oD.medico.Legajo = (long)dr["legajoMedico"];
                        oD.medico.ApellidoNombre = dr["apellido"].ToString() + ", " + dr["NombreP"].ToString();

                        if (dr["altura"] != DBNull.Value)
                        {
                            oD.altura = (int)dr["altura"];
                        }
                        if (dr["peso"] != DBNull.Value)
                        {
                            oD.peso = (int)dr["peso"];
                        }
                        if (dr["indicaciones"] != DBNull.Value)
                        {
                            oD.indicaciones = dr["indicaciones"].ToString();
                        }
                        oD.diagnostico = new Diagnostico();
                        oD.diagnostico.id = (int)dr["idDiag"];
                        oD.diagnostico.nombre = dr["nombreDiag"].ToString();
                        oD.horaFina = (TimeSpan)dr["horaFin"];
                        oD.horaInicio = (TimeSpan)dr["horaInicio"];
                        hc.detalleHC.Add(oD);
                        oD = null;

                    }//FIN WHILE DETALLE

                    comando = "SELECT Practica.nombre,Practica.idPractica, PracticasXDetalleHC.idDetalleHC "
                                + "FROM Practica INNER JOIN "
                                + "PracticasXDetalleHC ON Practica.idPractica = PracticasXDetalleHC.idPractica "
                                + "WHERE (PracticasXDetalleHC.idDetalleHC = @idDetalle)";
                    dr.Close();

                    //CARGAMOS LAS PRACTICAS POR MEDICO
                    if (hc.detalleHC != null)
                    {

                        foreach (DetalleHC oDetalle in hc.detalleHC)
                        {

                            oDetalle.lstPractica = new List<Practica>();
                            lstp = new List<SqlParameter>();
                            lstp.Add(new SqlParameter("@idDetalle", oDetalle.codDetalle));
                            dr = DB.GenerarReader(comando, lstp, con);
                            while (dr.Read())
                            {
                                oP = new Practica();
                                oP.codigo = int.Parse(dr["idPractica"].ToString());
                                oP.nombre = dr["nombre"].ToString();
                                oDetalle.lstPractica.Add(oP);
                                oP = null;
                            }//--FIN WHILE
                            dr.Close();
                        }//--FIN FORECH

                    }//FIN IF

                }//FIN primer IF
            }//FIN TRY
            catch (Exception)
            {

                throw;
            }
            finally
            {

                con.Close();
            }
            return hc;

        }//FIN METODO
        //OBTENEMOS FACTOR RH Y GRPSANGUINEO
        public static List<GrupoSanguineo> obtenerGruposSanguineos()
        {
            SqlConnection con = DB.Conectar();
            List<GrupoSanguineo> ld = null;
            GrupoSanguineo d = null;

            try
            {
                string comando = "select * from Grupo_Sanguineo";
                List<SqlParameter> listp = new List<SqlParameter>();

                SqlDataReader dr = DB.GenerarReader(comando, listp, con);
                ld = new List<GrupoSanguineo>();
                while (dr.Read())
                {
                    d = new GrupoSanguineo();
                    d.nombre = dr["nombre"].ToString();
                    d.id = int.Parse(dr["idGrupoSang"].ToString());
                    ld.Add(d);
                    d = null;

                }

            }
            catch (Exception)
            {

                throw;
            }
            finally
            {
                con.Close();
            }
            return ld;

        }
        public static List<FactorRH> obtenerFactorRH()
        {
            SqlConnection con = DB.Conectar();
            List<FactorRH> ld = null;
            FactorRH d = null;

            try
            {
                string comando = "select * from FactorRH";
                List<SqlParameter> listp = new List<SqlParameter>();

                SqlDataReader dr = DB.GenerarReader(comando, listp, con);
                ld = new List<FactorRH>();
                while (dr.Read())
                {
                    d = new FactorRH();
                    d.nombre = dr["nombre"].ToString();
                    d.id = int.Parse(dr["idFactorRH"].ToString());
                    ld.Add(d);
                    d = null;

                }

            }
            catch (Exception)
            {

                throw;
            }
            finally
            {
                con.Close();
            }
            return ld;

        }
        public static GrupoSanguineo obtenerGruposSanguineosXid(int idGRP)
        {
            SqlConnection con = DB.Conectar();

            GrupoSanguineo d = null;

            try
            {
                string comando = "select * from Grupo_Sanguineo where idGrupoSang=@id";
                List<SqlParameter> listp = new List<SqlParameter>();
                listp.Add(new SqlParameter("@id", idGRP));
                SqlDataReader dr = DB.GenerarReader(comando, listp, con);

                while (dr.Read())
                {
                    d = new GrupoSanguineo();
                    d.nombre = dr["nombre"].ToString();
                    d.id = int.Parse(dr["idGrupoSang"].ToString());


                }

            }
            catch (Exception)
            {

                throw;
            }
            finally
            {
                con.Close();
            }
            return d;

        }
        public static FactorRH obtenerFactorXid(int idFRH)
        {
            SqlConnection con = DB.Conectar();

            FactorRH d = null;

            try
            {
                string comando = "select * from FactorRH where idFactorRH=@id";
                List<SqlParameter> listp = new List<SqlParameter>();
                listp.Add(new SqlParameter("@id", idFRH));
                SqlDataReader dr = DB.GenerarReader(comando, listp, con);

                while (dr.Read())
                {
                    d = new FactorRH();
                    d.nombre = dr["nombre"].ToString();
                    d.id = int.Parse(dr["idFactorRH"].ToString());



                }

            }
            catch (Exception)
            {

                throw;
            }
            finally
            {
                con.Close();
            }
            return d;

        }
        public static List<Antecedentes> obtenerAntecedentesPersonales() 
        {

            SqlConnection con = DB.Conectar();
            List<Antecedentes> ld = null;
            Antecedentes d = null;

            try
            {
                string comando = "select * from Antecedentes_Personales";
                List<SqlParameter> listp = new List<SqlParameter>();

                SqlDataReader dr = DB.GenerarReader(comando, listp, con);
                ld = new List<Antecedentes>();
                while (dr.Read())
                {
                    d = new Antecedentes();
                    d.nombre = dr["nombre"].ToString();
                    d.id = int.Parse(dr["idAntecedente"].ToString());
                    ld.Add(d);
                    d = null;

                }

            }
            catch (Exception)
            {

                throw;
            }
            finally
            {
                con.Close();
            }
            return ld;

        
        }
    }
}
